package com.ctshk.rpc.system.service;


import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.system.dto.QueryBigClientAndAgentDTO;
import com.ctshk.rpc.system.dto.SysBigClientDTO;
import com.ctshk.rpc.system.dto.SysBigClientQueryListDTO;
import com.ctshk.rpc.system.req.SysBigClientAddReq;
import com.ctshk.rpc.system.req.SysBigClientApprovalReq;
import com.ctshk.rpc.system.req.SysBigClientQueryListReq;
import com.ctshk.rpc.system.req.SysBigClientUpdateStatusReq;

import java.util.List;

/**
 * <p>
 * 大客户 服务类
 * </p>
 *
 * @author 张志朋
 * @since 2021-02-03
 */
public interface ISysBigClientService {

    /**
     * 新增大客户
     *
     * @param sysBigClientReq 新增大客户入参
     * @param id 当前登录人id
     * @param addType 1仅保存,2走审批流程
     */
    Result add(SysBigClientAddReq req, Long id, int addType);

    /**
     * 大客户详情
     *
     * @param id 大客户id
     * @return 大客户详情
     */
    Result<SysBigClientDTO> query(Long id);

    /**
     * 编辑大客户
     *
     * @param sysBigClientEditReq 编辑大客户入参
     * @param id 当前登录人id
     * @param addType 1仅保存,2走审批流程
     * @return
     */
    Result editBigClient(SysBigClientAddReq req, Long id, int addType);

    /**
     * 大客户管理列表查询
     *
     * @param req 入参
     * @return 返回列表
     */
    PageResponse<SysBigClientQueryListDTO> queryList(SysBigClientQueryListReq req, TokenUser tokenUser);

    /**
     * 大客户管理列表查询(验证)
     *
     * @param req 入参
     * @return 返回列表
     */
    PageResponse<SysBigClientQueryListDTO> queryListPer(SysBigClientQueryListReq req, TokenUser tokenUser);

    /**
     * 大客户AND代理商联合查询
     *
     * @param name 入参
     * @return 返回列表
     */
    List<QueryBigClientAndAgentDTO> queryBigClientAndAgent(String name);


    /**大客户审核
	 * @param req
	 * @return
	 */
	Result approval(SysBigClientApprovalReq req);

	/**修改大客户状态
	 * @param req
	 * @return
	 */
	Result updateStatus(SysBigClientUpdateStatusReq req);

    /**删除供应商
     * @param id
     * @return
     */
    Result deleteById(Long id);
}
